Hazelcast Events এবং Listeners

Database Tutorials - হ্যাজেলকাস্ট  (Hazelcast)
265
265

Hazelcast Events এবং Listeners ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম ডেটা পরিবর্তন এবং কার্যকলাপের ওপর নজর রাখতে সাহায্য করে। Hazelcast-এ ইভেন্ট এবং লিসেনার ব্যবহারের মাধ্যমে আপনি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলির (যেমন IMap, IQueue, ইত্যাদি) ওপর ঘটিত বিভিন্ন পরিবর্তন ট্র্যাক করতে পারেন এবং সেগুলোর ওপর নির্দিষ্ট কাজ বা হ্যান্ডলিং প্রয়োগ করতে পারেন। এটি ক্লাস্টারের কর্মক্ষমতা পর্যবেক্ষণ করতে এবং ডেটা ইন্টিগ্রিটি বজায় রাখতে সহায়ক।


Hazelcast Events

Hazelcast-এ ইভেন্ট সাধারণত ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার এর ওপর ঘটে, যেমন যখন কোনও মান ইনসার্ট, আপডেট বা মুছে ফেলা হয়, অথবা একটি নোড ক্লাস্টারে যোগ বা অপসারিত হয়। এগুলি সাধারণত মেম্বারশিপ, ডেটা চেঞ্জ বা ইভেন্টগুলির মধ্যে বিভিন্ন পরিবর্তনের সূচনা করে।

Hazelcast বিভিন্ন ধরনের ইভেন্ট পরিচালনা করতে সক্ষম:

  1. Data Structure Events: IMap, IQueue, IList, ISet ইত্যাদির ওপর পরিবর্তন।
  2. Cluster Events: ক্লাস্টার সদস্য যোগ হওয়া, অপসারণ হওয়া বা সিস্টেমের স্টেট পরিবর্তন।
  3. Member Events: Hazelcast ক্লাস্টারে সদস্য নোডগুলোর যুক্ত হওয়া বা বাদ পড়া।
  4. Entry Events: IMap এর মধ্যে কোনও এন্ট্রি যোগ, আপডেট, অথবা মুছে ফেলা।

Listeners

Hazelcast-এ Listeners হল বিশেষ ধরনের কাস্টম ফাংশন যা একটি ইভেন্ট ঘটে যাওয়ার পর ট্রিগার হয় এবং সেই ইভেন্টের ওপর নির্দিষ্ট কাজ করে। উদাহরণস্বরূপ, আপনি যখন একটি IMap-এ কোনও নতুন এন্ট্রি যুক্ত করবেন, তখন একটি MapListener ব্যবহার করে সেই পরিবর্তনটি ট্র্যাক করতে পারবেন।

ডেটা স্ট্রাকচার লিসেনার

Hazelcast-এ বিভিন্ন ধরনের ডেটা স্ট্রাকচার লিসেনার রয়েছে, যেমন MapListener, QueueListener, ইত্যাদি, যা নির্দিষ্ট ডেটা স্ট্রাকচারের ওপর পরিবর্তন ট্র্যাক করতে সাহায্য করে।

MapListener উদাহরণ

IMap এর জন্য MapListener ব্যবহার করে, আপনি ডেটার প্রতি পরিবর্তন ট্র্যাক করতে পারেন, যেমন একটি নতুন এন্ট্রি যোগ করা, এন্ট্রি পরিবর্তন বা মুছে ফেলা। নিচে একটি উদাহরণ দেওয়া হলো:

import com.hazelcast.core.MapListener;
import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;

public class MyMapListener implements MapListener {

    @Override
    public void entryAdded(EntryEvent event) {
        System.out.println("Entry added: " + event.getKey() + " -> " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent event) {
        System.out.println("Entry removed: " + event.getKey());
    }

    @Override
    public void entryUpdated(EntryEvent event) {
        System.out.println("Entry updated: " + event.getKey() + " -> " + event.getValue());
    }

    @Override
    public void entryEvicted(EntryEvent event) {
        System.out.println("Entry evicted: " + event.getKey());
    }
}

এখানে MyMapListener ক্লাসটি IMap এর উপরে যেকোনো ধরনের পরিবর্তন ট্র্যাক করবে এবং তার সাথে সংশ্লিষ্ট মেসেজ প্রদর্শন করবে।

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hz.getMap("myMap");

map.addEntryListener(new MyMapListener(), true); // "true" means listening for all events

map.put("key1", "value1");
map.put("key2", "value2");
map.remove("key1");

এখানে addEntryListener পদ্ধতিটি ক্লাস্টারের IMap-এ কোনো এন্ট্রি পরিবর্তন হওয়ার সাথে সাথে উপরের লিসেনারকে ট্রিগার করবে।


Cluster Events Listener

ClusterListener ক্লাস্টারের সদস্যদের যোগ হওয়া বা অপসারণ হওয়ার সময়ও ইভেন্ট হতে পারে। আপনি MembershipListener ব্যবহার করে ক্লাস্টারের সদস্যদের পরিবর্তন ট্র্যাক করতে পারেন।

MembershipListener উদাহরণ

import com.hazelcast.core.MembershipEvent;
import com.hazelcast.core.MembershipListener;
import com.hazelcast.core.HazelcastInstance;

public class MyMembershipListener implements MembershipListener {

    @Override
    public void memberAdded(MembershipEvent membershipEvent) {
        System.out.println("New member added: " + membershipEvent.getMember().getAddress());
    }

    @Override
    public void memberRemoved(MembershipEvent membershipEvent) {
        System.out.println("Member removed: " + membershipEvent.getMember().getAddress());
    }
}

এটি MembershipListener ব্যবহার করে Hazelcast ক্লাস্টারে নতুন সদস্য যোগ বা অপসারণ হওয়ার সময় ট্রিগার হবে। আপনি ক্লাস্টারের সদস্যদের যুক্ত হওয়া বা অপসারণ হওয়া সম্পর্কিত তথ্য পেতে পারেন।

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getCluster().addMembershipListener(new MyMembershipListener());

এখানে addMembershipListener ক্লাস্টারের সদস্যের পরিবর্তনের সময় ইভেন্ট শোনা শুরু করবে।


EntryListener উদাহরণ

IMap এর জন্য EntryListener ব্যবহার করা যেতে পারে। এর মাধ্যমে আপনি put, remove, update ইত্যাদি ক্রিয়াগুলোর ওপর নজর রাখতে পারবেন। এটি সদস্য যোগ হওয়া এবং তার সাথে সংশ্লিষ্ট ডেটা পরিবর্তন ট্র্যাক করে।

import com.hazelcast.map.listener.EntryAddedListener;
import com.hazelcast.map.listener.EntryRemovedListener;
import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.HazelcastInstance;

public class MyEntryListener implements EntryAddedListener<String, String>, EntryRemovedListener<String, String> {

    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        System.out.println("Added: " + event.getKey() + " -> " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        System.out.println("Removed: " + event.getKey());
    }
}

এখানে EntryAddedListener এবং EntryRemovedListener এর মাধ্যমে IMap এর উপর যেকোনো নতুন এন্ট্রি যোগ বা অপসারণের পরিবর্তন ট্র্যাক করা যাচ্ছে।

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hz.getMap("exampleMap");

map.addEntryListener(new MyEntryListener(), true);
map.put("key1", "value1");
map.remove("key1");

Hazelcast Events এবং Listeners এর সুবিধা

  1. রিয়েল-টাইম ডেটা ট্র্যাকিং: ইভেন্ট এবং লিসেনার ব্যবহারের মাধ্যমে আপনি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের সমস্ত পরিবর্তন রিয়েল-টাইমে ট্র্যাক করতে পারবেন।
  2. ডেটা ইন্টিগ্রিটি: ডেটার আপডেট, রিমুভ বা ইনসার্টের সময় ঘটানো পরিবর্তনগুলোর উপর নজর রাখতে পারলে, সিস্টেমে কোনো অবাঞ্ছিত ডেটা পরিবর্তন বা ত্রুটি ঘটানোর সম্ভাবনা কমে যায়।
  3. ইন্টিগ্রেটেড রেসপন্স: ইভেন্ট এবং লিসেনার ব্যবহার করে ক্লাস্টারে পরিবর্তন ঘটলে আপনি অটোমেটিকভাবে সিস্টেমে ইন্টিগ্রেটেড রেসপন্স কার্যকর করতে পারবেন।

সারাংশ

Hazelcast Events এবং Listeners হল ডিস্ট্রিবিউটেড সিস্টেমে ডেটার পরিবর্তন এবং কার্যকলাপ ট্র্যাক করার অত্যন্ত কার্যকরী সরঞ্জাম। MapListener, EntryListener, এবং MembershipListener ব্যবহার করে আপনি সিস্টেমের বিভিন্ন পর্যায়ে পরিবর্তনগুলোর ওপর নজর রাখতে পারেন এবং সেগুলোর উপরে নির্দিষ্ট কার্যাবলী বা রেসপন্স প্রয়োগ করতে পারেন। এর মাধ্যমে Hazelcast ক্লাস্টারের কার্যকারিতা উন্নত করা এবং রিয়েল-টাইম ডেটা প্রক্রিয়াজাতকরণ সম্ভব হয়।

common.content_added_by

EntryListener, ItemListener এবং MapListener ব্যবহার

287
287

Hazelcast-এ EntryListener, ItemListener, এবং MapListener হল ইভেন্ট-ভিত্তিক শ্রোতা (listener) যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের পরিবর্তন বা ইভেন্টগুলি মনিটর করতে ব্যবহৃত হয়। এই লিসেনারগুলির মাধ্যমে আপনি ডেটা পরিবর্তন, যোগ বা মুছে ফেলার সময় দ্রুত প্রতিক্রিয়া জানাতে পারেন এবং একটি রিয়েল-টাইম ব্যবস্থায় সিস্টেমের অবস্থা ট্র্যাক করতে পারেন।

Hazelcast ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার যেমন IMap, IQueue, ISet ইত্যাদির জন্য বিভিন্ন ধরণের ইভেন্ট শোনা যায়। আপনি যখন একটি ডেটা স্ট্রাকচারে কোনো পরিবর্তন করবেন, তখন এই listeners আপনাকে সেই পরিবর্তন সম্পর্কে অবহিত করবে।


1. EntryListener

EntryListener হল একটি ইন্টারফেস যা IMap (ডিস্ট্রিবিউটেড ম্যাপ) এর এন্ট্রি পরিবর্তন মনিটর করতে ব্যবহৃত হয়। এটি put, remove, update, evict ইত্যাদি অপারেশনগুলির সময় ইভেন্ট শোনার জন্য ব্যবহৃত হয়।

EntryListener উদাহরণ:

import com.hazelcast.core.EntryListener;
import com.hazelcast.map.EntryEvent;
import com.hazelcast.map.IMap;

public class MyEntryListener implements EntryListener<String, String> {

    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        System.out.println("Entry added: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        System.out.println("Entry removed: " + event.getKey());
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        System.out.println("Entry updated: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        System.out.println("Entry evicted: " + event.getKey());
    }
}

এখানে, EntryListener ইন্টারফেসে চারটি প্রধান ইভেন্ট মেথড রয়েছে:

  • entryAdded: একটি নতুন এন্ট্রি যোগ করা হলে কল হয়।
  • entryRemoved: একটি এন্ট্রি মুছে ফেলা হলে কল হয়।
  • entryUpdated: একটি এন্ট্রি আপডেট হলে কল হয়।
  • entryEvicted: একটি এন্ট্রি নিষ্ক্রিয় হলে কল হয় (যেমন ক্যাশে eviction ইভেন্ট)।

EntryListener যোগ করা:

IMap<String, String> map = hazelcastInstance.getMap("exampleMap");
map.addEntryListener(new MyEntryListener(), true);  // true for synchronous

2. ItemListener

ItemListener হল একটি ইন্টারফেস যা IQueue, ISet এবং IList এর মতো ডিস্ট্রিবিউটেড কালেকশন এর জন্য ব্যবহৃত হয়। এটি add, remove, clear ইত্যাদি অপারেশনের সময় ইভেন্ট শোনার জন্য ব্যবহৃত হয়।

ItemListener উদাহরণ:

import com.hazelcast.core.ItemEvent;
import com.hazelcast.core.ItemListener;
import com.hazelcast.collection.IQueue;

public class MyItemListener implements ItemListener<String> {

    @Override
    public void itemAdded(ItemEvent<String> item) {
        System.out.println("Item added: " + item.getItem());
    }

    @Override
    public void itemRemoved(ItemEvent<String> item) {
        System.out.println("Item removed: " + item.getItem());
    }
}

এখানে, ItemListener ইন্টারফেসে দুটি প্রধান ইভেন্ট মেথড রয়েছে:

  • itemAdded: একটি নতুন আইটেম যোগ করা হলে কল হয়।
  • itemRemoved: একটি আইটেম মুছে ফেলা হলে কল হয়।

ItemListener যোগ করা:

IQueue<String> queue = hazelcastInstance.getQueue("exampleQueue");
queue.addItemListener(new MyItemListener(), true);  // true for synchronous

3. MapListener

MapListener হল একটি ইন্টারফেস যা IMap এর জন্য ব্যবহৃত হয় এবং এটি ম্যাপের পরিবর্তন, যেমন put, remove, clear ইত্যাদি ইভেন্ট মনিটর করে। যদিও EntryListener ইন্টারফেসটি বেশি ব্যবহৃত হয়, MapListener এছাড়াও ব্যবহার করা যেতে পারে যদি আপনি সম্পূর্ণ ম্যাপের পরিবর্তন শোনার প্রয়োজন অনুভব করেন।

MapListener উদাহরণ:

import com.hazelcast.core.MapEvent;
import com.hazelcast.core.MapListener;
import com.hazelcast.map.IMap;

public class MyMapListener implements MapListener {

    @Override
    public void mapCleared(MapEvent event) {
        System.out.println("Map cleared");
    }

    @Override
    public void mapEvicted(MapEvent event) {
        System.out.println("Map evicted");
    }
}

এখানে, MapListener ইন্টারফেসে দুটি প্রধান ইভেন্ট মেথড রয়েছে:

  • mapCleared: যখন পুরো ম্যাপ ক্লিয়ার করা হয়।
  • mapEvicted: ম্যাপের এন্ট্রিগুলিকে evict করা হয়।

MapListener যোগ করা:

IMap<String, String> map = hazelcastInstance.getMap("exampleMap");
map.addMapListener(new MyMapListener());

EntryListener, ItemListener, এবং MapListener এর মধ্যে পার্থক্য

বৈশিষ্ট্যEntryListenerItemListenerMapListener
ব্যবহারIMap এর এন্ট্রি পরিবর্তন মনিটর করতেIQueue, ISet, IList এর আইটেম পরিবর্তনIMap এর পুরো ম্যাপ পরিবর্তন
ইভেন্টEntryAdded, EntryRemoved, EntryUpdated, EntryEvictedItemAdded, ItemRemovedMapCleared, MapEvicted
অপারেশনডেটা স্ট্রাকচারের এন্ট্রি (key-value) এর উপর কাজ করেআইটেম যোগ বা মুছে ফেলার উপর কাজ করেপুরো ম্যাপ বা এর কোনো অংশের পরিবর্তন
সিনক্রোনাইজেশনসিঙ্ক্রোনাস বা অ্যাসিনক্রোনাসভাবে কাজ করা যায়সিঙ্ক্রোনাস বা অ্যাসিনক্রোনাসভাবে কাজ করা যায়সাধারণত অ্যাসিনক্রোনাস, তবে সিঙ্ক্রোনাসও হতে পারে

সারাংশ

EntryListener, ItemListener, এবং MapListener হল Hazelcast এর ইভেন্ট-ভিত্তিক শ্রোতা (listeners) যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের উপর কার্যকরী পরিবর্তন বা ইভেন্টগুলি মনিটর করতে ব্যবহৃত হয়। EntryListener একক এন্ট্রি পরিবর্তন মনিটর করতে, ItemListener ডিস্ট্রিবিউটেড কালেকশনে আইটেম যোগ বা মুছে ফেলা, এবং MapListener পুরো ম্যাপের পরিবর্তন ট্র্যাক করতে সহায়ক। এই listeners ব্যবহার করে আপনি Hazelcast ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম ডেটা পরিবর্তন মনিটর করতে পারেন এবং দ্রুত প্রতিক্রিয়া জানাতে পারেন।

common.content_added_by

Distributed Events Management

253
253

Distributed Events Management হল একটি পদ্ধতি যার মাধ্যমে Hazelcast ক্লাস্টারে real-time events এবং changes ম্যানেজ করা হয়। Hazelcast-এর distributed events ব্যবস্থাপনা ক্লাস্টারে থাকা বিভিন্ন ডেটা স্ট্রাকচার, যেমন IMap, IQueue, IList, ইত্যাদিতে ডেটার পরিবর্তনগুলো distributedভাবে শেয়ার এবং ম্যানেজ করার জন্য ব্যবহৃত হয়। এতে ডিস্ট্রিবিউটেড সিস্টেমে ইভেন্ট ট্রিগার এবং রিয়েল-টাইম ডেটা প্রসেসিং করা যায়।

Hazelcast ইভেন্ট সিস্টেম ব্যবহারকারীদের জন্য সুবিধাজনক হতে পারে যখন তারা real-time notifications, data updates, এবং changes অনুসরণ করতে চান। উদাহরণস্বরূপ, আপনি যদি একটি distributed cache বা data store ব্যবহার করেন এবং কোনো ডেটা পরিবর্তন হলে তা অন্যান্য সিস্টেম বা ক্লায়েন্টে জানাতে চান, তাহলে এই ইভেন্ট সিস্টেমটি ব্যবহার করা হতে পারে।


Distributed Events Management in Hazelcast

1. Entry Listener

Entry Listener হল একটি ইভেন্ট লিসেনার যা IMap বা অন্যান্য ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের উপর কাজ করে এবং এন্ট্রি পরিবর্তন (add, update, remove) হলে ট্রিগার হয়।

EntryListener ব্যবহার করে আপনি ইভেন্ট হ্যান্ডলিং করতে পারেন, যেমন:

  • একটি map-এ কোনো ডেটা যোগ করা, পরিবর্তন করা বা মুছে ফেলা হলে তাতে রিয়েল-টাইম রেসপন্স পাওয়া।
EntryListener উদাহরণ:
IMap<String, String> map = hazelcastInstance.getMap("myMap");

// EntryListener তৈরি করা
map.addEntryListener(new EntryListener<String, String>() {
    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        System.out.println("New entry added: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        System.out.println("Entry removed: " + event.getKey());
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        System.out.println("Entry updated: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        System.out.println("Entry evicted: " + event.getKey());
    }
}, true); // true means the listener is added to all nodes of the cluster

এই উদাহরণে, যখন IMap-এ কোনো এন্ট্রি যোগ, পরিবর্তন, বা মুছে ফেলা হয়, তখন EntryListener ট্রিগার হবে এবং সংশ্লিষ্ট ইভেন্ট হ্যান্ডলার কার্যকর হবে।


2. Item Listener

ItemListener হল একটি ইভেন্ট লিসেনার যা IQueue বা ISet এর জন্য ব্যবহৃত হয়। এটি ডেটার add বা remove অপারেশনগুলিতে ট্রিগার হয়।

ItemListener উদাহরণ:
IQueue<String> queue = hazelcastInstance.getQueue("myQueue");

queue.addItemListener(new ItemListener<String>() {
    @Override
    public void itemAdded(ItemEvent<String> itemEvent) {
        System.out.println("Item added: " + itemEvent.getItem());
    }

    @Override
    public void itemRemoved(ItemEvent<String> itemEvent) {
        System.out.println("Item removed: " + itemEvent.getItem());
    }
}, true);

এখানে, ItemListener ব্যবহার করে আপনি একটি কিউতে নতুন আইটেম যুক্ত বা মুছে ফেলার সময় ইভেন্ট শুনতে পারেন।


3. Map Listener

MapListener হল একটি বিশেষ ধরনের ইভেন্ট লিসেনার যা IMap ডেটা স্ট্রাকচারের জন্য ব্যবহৃত হয়। এটি IMap-এর উপর অপারেশন করার সময় নির্দিষ্ট ইভেন্টগুলি শোনে, যেমন নতুন এন্ট্রি যোগ, এন্ট্রি আপডেট, এবং এন্ট্রি মুছে ফেলা।

MapListener উদাহরণ:
IMap<String, String> map = hazelcastInstance.getMap("myMap");

map.addMapListener(new MapListener<String, String>() {
    @Override
    public void mapEvicted(MapEvent mapEvent) {
        System.out.println("Map evicted: " + mapEvent.getName());
    }

    @Override
    public void mapCleared(MapEvent mapEvent) {
        System.out.println("Map cleared: " + mapEvent.getName());
    }
}, true);

এটি আপনাকে IMap এর উপর সিঙ্ক্রোনাইজড ইভেন্টগুলি ট্র্যাক করতে সাহায্য করে।


4. ITopic (Publish-Subscribe Pattern)

ITopic হল Hazelcast-এর একটি ডিস্ট্রিবিউটেড পাবলিশ-সাবস্ক্রাইব সিস্টেম, যা ক্লাস্টারের মধ্যে ইভেন্টগুলো শেয়ার করতে ব্যবহৃত হয়। ITopic ক্লাসটি পাবলিশ এবং সাবস্ক্রাইব করার জন্য একটি ইন্টারফেস প্রদান করে, যেখানে একজন Publisher ডেটা পাঠায় এবং Subscriber সেই ডেটা গ্রহণ করে।

ITopic উদাহরণ:
ITopic<String> topic = hazelcastInstance.getTopic("myTopic");

// Subscriber তৈরি করা
topic.addMessageListener(new MessageListener<String>() {
    @Override
    public void onMessage(Message<String> message) {
        System.out.println("Received message: " + message.getMessageObject());
    }
});

// Publisher (Message পাঠানো)
topic.publish("Hello, Hazelcast!");

এখানে, একজন Publisher একটি মেসেজ পাঠান এবং Subscriber সেই মেসেজ গ্রহণ করে। এটি real-time event management এর জন্য একটি ভাল পদ্ধতি।


5. Event Filtering and Optimizations

Hazelcast-এ আপনি ইভেন্টগুলিকে filter করতে পারেন যাতে নির্দিষ্ট ধরনের ডেটা বা পরিবর্তনগুলির জন্য ইভেন্ট শুনতে পারেন।

Event Filtering উদাহরণ:

IMap<String, String> map = hazelcastInstance.getMap("myMap");

map.addEntryListener(new EntryListener<String, String>() {
    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        if ("specificKey".equals(event.getKey())) {
            System.out.println("Filtered entry added: " + event.getKey() + " = " + event.getValue());
        }
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        // Filter logic for removed entries
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        // Filter logic for updated entries
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        // Filter logic for evicted entries
    }
}, false); // False means the listener is added to a single node

এখানে, শুধুমাত্র একটি নির্দিষ্ট কীগুলির জন্য ইভেন্ট ট্র্যাক করা হচ্ছে, যাতে efficient event handling নিশ্চিত করা যায়।


6. Real-Time Data Processing with Event Listeners

Hazelcast-এ ইভেন্ট লিসেনারগুলি রিয়েল-টাইম ডেটা প্রসেসিংয়ে ব্যবহার করা যেতে পারে। আপনি যদি কোনও ইভেন্টের ভিত্তিতে real-time triggers চালাতে চান, তবে ইভেন্ট লিসেনার ব্যবহার করা একটি কার্যকর উপায় হতে পারে।

উদাহরণস্বরূপ:

  • যখন একটি IMap-এ নতুন এন্ট্রি যোগ করা হয়, তখন আপনার অ্যাপ্লিকেশন একটি ক্রিয়া ট্রিগার করতে পারে (যেমন মেইল পাঠানো বা অন্য কোনও সার্ভিসে তথ্য পাঠানো)।

সারাংশ

Distributed Events Management হল একটি শক্তিশালী ফিচার যা Hazelcast ক্লাস্টারে রিয়েল-টাইম ডেটা পরিবর্তন, events, এবং notifications ম্যানেজ করতে ব্যবহৃত হয়। EntryListener, ItemListener, MapListener, ITopic, এবং Event Filtering এর মতো উপকরণগুলি আপনার ডিস্ট্রিবিউটেড সিস্টেমে কার্যকরী ইভেন্ট ট্র্যাকিং এবং real-time event processing নিশ্চিত করতে সাহায্য করে।

common.content_added_by

Real-time Data Processing with Listeners

280
280

Hazelcast Listeners হল এমন একটি শক্তিশালী ফিচার যা আপনাকে Hazelcast ডেটা স্ট্রাকচারের মধ্যে রিয়েল-টাইম ডেটা প্রসেসিং করতে সহায়ক হয়। লিসেনারগুলি একটি ইভেন্ট-ড্রিভেন আর্কিটেকচারে কাজ করে, যেখানে আপনি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে কোনো পরিবর্তন ঘটলে তা জানাতে পারেন এবং সেই অনুযায়ী কাজ করতে পারেন। এর মাধ্যমে Hazelcast সিস্টেমে ডেটার অন্তর্নিহিত পরিবর্তনগুলো দ্রুত সনাক্ত করা এবং সেগুলোর উপর অ্যাকশন গ্রহণ করা সম্ভব হয়।

Hazelcast Listeners ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে যেমন IMap, IQueue, ISet, IList ইত্যাদিতে পরিবর্তন হলে স্বয়ংক্রিয়ভাবে ট্রিগার হয়, যা রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়।


Listeners এর বিভিন্ন ধরণ

Hazelcast এ প্রধানত তিন ধরনের Listeners ব্যবহৃত হয়:

  1. EntryListener: IMap বা অন্য Key-Value ডেটা স্ট্রাকচারে ডেটার এন্ট্রি (এন্ট্রি যোগ, পরিবর্তন বা মুছে ফেলা) সম্পর্কিত ইভেন্টগুলোর জন্য ব্যবহার করা হয়।
  2. ItemListener: ISet, IQueue, IList প্রভৃতি ডেটা স্ট্রাকচারে আইটেমের যোগ, মুছে ফেলা বা পরিবর্তন সম্পর্কিত ইভেন্টগুলোর জন্য।
  3. MapListener: IMap বা ডিস্ট্রিবিউটেড ম্যাপের মধ্যে ডেটার অতিরিক্ত কাস্টম ইভেন্ট ট্র্যাক করার জন্য।

1. EntryListener - IMap এর জন্য

EntryListener ব্যবহার করা হয় যখন আপনি IMap এর Key-Value পেয়ারে ডেটার পরিবর্তন সনাক্ত করতে চান। যেমন ডেটা যোগ, পরিবর্তন বা মুছে ফেলা।

ব্যবহার:

EntryListener এক বা একাধিক ইভেন্টে সাড়া দেয়, যেমন:

  • entryAdded: নতুন একটি এন্ট্রি যোগ করা হলে।
  • entryUpdated: একটি এন্ট্রি আপডেট হলে।
  • entryRemoved: একটি এন্ট্রি মুছে ফেলা হলে।

কোড উদাহরণ:

import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.EntryListener;
import com.hazelcast.map.IMap;

public class MyEntryListener implements EntryListener<String, String> {

    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        System.out.println("Entry added: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        System.out.println("Entry removed: " + event.getKey());
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        System.out.println("Entry updated: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        // Optional: Handle evictions
    }
}

// Hazelcast instance তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();

// IMap তৈরি
IMap<String, String> map = hz.getMap("myMap");

// EntryListener যোগ করা
map.addEntryListener(new MyEntryListener(), true);  // 'true' means to include existing entries

কাজের প্রক্রিয়া:

  • entryAdded ট্রিগার হয় যখন একটি নতুন কিজি ভ্যালু পেয়ার IMap এ যুক্ত হয়।
  • entryUpdated ট্রিগার হয় যখন কোনো কিজি ভ্যালু পেয়ার আপডেট হয়।
  • entryRemoved ট্রিগার হয় যখন একটি কিজি ভ্যালু পেয়ার IMap থেকে মুছে ফেলা হয়।

2. ItemListener - IQueue, ISet, IList এর জন্য

ItemListener ব্যবহার করা হয় যখন আপনি ISet, IQueue বা IList এ আইটেম যোগ, মুছে ফেলা বা পরিবর্তন হওয়ার ইভেন্টগুলিকে ট্র্যাক করতে চান।

ব্যবহার:

  • itemAdded: যখন একটি নতুন আইটেম যোগ করা হয়।
  • itemRemoved: যখন কোনো আইটেম মুছে ফেলা হয়।

কোড উদাহরণ:

import com.hazelcast.core.ItemEvent;
import com.hazelcast.core.ItemListener;
import com.hazelcast.queue.IQueue;

public class MyItemListener implements ItemListener<String> {

    @Override
    public void itemAdded(ItemEvent<String> itemEvent) {
        System.out.println("Item added: " + itemEvent.getItem());
    }

    @Override
    public void itemRemoved(ItemEvent<String> itemEvent) {
        System.out.println("Item removed: " + itemEvent.getItem());
    }
}

// Hazelcast instance তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();

// IQueue তৈরি
IQueue<String> queue = hz.getQueue("myQueue");

// ItemListener যোগ করা
queue.addItemListener(new MyItemListener(), true);  // 'true' means to include existing items

কাজের প্রক্রিয়া:

  • itemAdded ট্রিগার হয় যখন একটি নতুন আইটেম IQueue, ISet বা IList এ যোগ করা হয়।
  • itemRemoved ট্রিগার হয় যখন কোনো আইটেম IQueue, ISet বা IList থেকে মুছে ফেলা হয়।

3. MapListener - IMap এর জন্য (ডিস্ট্রিবিউটেড মেটাডেটা)

Hazelcast এ MapListener ডিস্ট্রিবিউটেড IMap এর আরও উন্নত ট্র্যাকিংয়ের জন্য ব্যবহৃত হয়। এটি আপনাকে ম্যাপের মধ্যে প্রবাহিত হওয়া কাস্টম ইভেন্টগুলির উপর নজর রাখতে দেয়।

ব্যবহার:

MapListener বিশেষত আরও কাস্টম ইভেন্ট (যেমন, যখন putAll, removeAll, বা অন্যান্য নির্দিষ্ট কার্যকলাপ সম্পন্ন হয়) ট্র্যাক করতে ব্যবহৃত হয়।


Real-time Data Processing উদাহরণ

ধরা যাক, একটি IMap ব্যবহার করে আমরা ই-কমার্স সাইটে প্রোডাক্টের stock quantity ট্র্যাক করতে চাই। আপনি যদি stock এর সংখ্যা একসাথে বাড়াতে বা কমাতে চান, তবে আপনার অ্যাপ্লিকেশনকে দ্রুত প্রতিক্রিয়া জানাতে হবে। EntryListener ব্যবহার করে আপনি যখনই stock সংখ্যাটি আপডেট করবেন, তখন তা real-time এ পেতে পারবেন।

কোড উদাহরণ:

public class StockEntryListener implements EntryListener<String, Integer> {

    @Override
    public void entryUpdated(EntryEvent<String, Integer> event) {
        String product = event.getKey();
        Integer newStock = event.getValue();
        System.out.println("Product stock updated: " + product + " new stock: " + newStock);
    }

    @Override
    public void entryAdded(EntryEvent<String, Integer> event) {}
    @Override
    public void entryRemoved(EntryEvent<String, Integer> event) {}
    @Override
    public void entryEvicted(EntryEvent<String, Integer> event) {}
}

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, Integer> productStock = hz.getMap("productStock");

// EntryListener যোগ করা
productStock.addEntryListener(new StockEntryListener(), true);

// Stock আপডেট করা
productStock.put("Laptop", 20);

এই উদাহরণে, যখনই একটি product stock আপডেট হবে, entryUpdated ইভেন্ট ট্রিগার হবে এবং আপনি তার সাথে সাড়া দিতে পারবেন।


সারাংশ

Hazelcast Listeners রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য একটি অত্যন্ত কার্যকর উপকরণ, যা ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে (IMap, IQueue, ISet, IList) ডেটার পরিবর্তন সনাক্ত করে এবং তা অনুযায়ী অ্যাকশন নিতে সাহায্য করে। EntryListener, ItemListener এবং MapListener এই সকল ডেটা স্ট্রাকচারে কার্যকরভাবে ব্যবহার করা যায় এবং ডেটার পরিবর্তন দ্রুত সনাক্ত করতে সক্ষম হয়, যা real-time ইভেন্ট প্রসেসিংয়ের জন্য অপরিহার্য।

common.content_added_by

Events এবং Triggers ব্যবহার করে Workflow Management

231
231

Hazelcast একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটা গ্রিড প্ল্যাটফর্ম যা events এবং triggers ব্যবহারের মাধ্যমে রিয়েল-টাইম workflow management করতে সক্ষম। এই বৈশিষ্ট্যগুলো আপনাকে ডেটা পরিবর্তনের সাথে সাথে সিস্টেমে স্বয়ংক্রিয় কার্যাবলী প্রক্রিয়া করতে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলিতে ইভেন্ট-ভিত্তিক প্রক্রিয়াগুলি পরিচালনা করতে সহায়ক।

Hazelcast-এ Events এবং Triggers ব্যবহার করে আপনি সহজেই ডিস্ট্রিবিউটেড সিস্টেমে ইভেন্ট-ড্রিভেন ওয়ার্কফ্লো তৈরি করতে পারেন। এই প্রক্রিয়াগুলি বিভিন্ন অ্যাকশন বা কার্যাবলীর জন্য অটোমেটিক ট্রিগার তৈরি করে, যা ডেটা বা স্টেট পরিবর্তন ঘটলে কার্যকর হয়।


Events in Hazelcast

Events হল সিস্টেমের মধ্যে ঘটে যাওয়া গুরুত্বপূর্ণ পরিবর্তনগুলির সূচনা, যা ক্লাস্টারের বিভিন্ন সেবা বা ডেটা স্ট্রাকচারে ঘটতে পারে। Hazelcast বিভিন্ন ধরনের ইভেন্ট প্রদান করে, যা ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে event-driven architecture তৈরি করতে সহায়ক।

Hazelcast-এ সাধারণত নিম্নলিখিত ইভেন্ট টাইপ ব্যবহার করা হয়:

  1. Map Events: IMap-এ ঘটে যাওয়া ইভেন্টগুলি (যেমন, put, remove, evict)।
  2. Set Events: ISet-এ ঘটে যাওয়া ইভেন্টগুলি।
  3. Queue Events: IQueue বা IList-এ ঘটে যাওয়া ইভেন্টগুলি।
  4. EntryListener Events: IMap বা IList এ নতুন এন্ট্রি যুক্ত হওয়া বা মুছে যাওয়া।

IMap EntryListener Event Example:

IMap<String, String> map = hazelcastInstance.getMap("myMap");

// EntryListener তৈরি করুন যা put, remove ইভেন্টগুলির জন্য ট্রিগার হবে
EntryListener<String, String> listener = new EntryListener<String, String>() {
    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        System.out.println("Entry added: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        System.out.println("Entry removed: " + event.getKey());
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        System.out.println("Entry updated: " + event.getKey() + " = " + event.getValue());
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        System.out.println("Entry evicted: " + event.getKey());
    }
};

// IMap এ EntryListener রেজিস্টার করা
map.addEntryListener(listener, true);

এই কোড স্নিপেটটি একটি Map এর উপর EntryListener তৈরি করে, যা put, remove, update, এবং evict ইভেন্টগুলির জন্য কাজ করবে।


Triggers in Hazelcast

Triggers হল সেই কৌশল যা event-driven কার্যাবলী বা workflow চালানোর জন্য ব্যবহার করা হয়। Hazelcast-এ, ট্রিগার সাধারণত listener-based হয় এবং এটি ডেটা বা স্টেট পরিবর্তনের পর স্বয়ংক্রিয়ভাবে একটি কার্য পরিচালনা করে।

Hazelcast-এ ট্রিগার তৈরি করার জন্য, আপনি EntryProcessor, Listeners, এবং অন্যান্য অটোমেটেড প্রক্রিয়াগুলি ব্যবহার করতে পারেন।

Map Event Trigger Using EntryProcessor:

IMap<String, Integer> map = hazelcastInstance.getMap("myMap");

// EntryProcessor ব্যবহার করে ট্রিগার তৈরি করা
EntryProcessor<String, Integer, Integer> processor = new EntryProcessor<String, Integer, Integer>() {
    @Override
    public Integer process(Map.Entry<String, Integer> entry) {
        // কিছু লজিক প্রয়োগ করা (যেমন, মান পরিবর্তন)
        entry.setValue(entry.getValue() + 1);
        return entry.getValue();
    }
};

// EntryProcessor চালানো
map.executeOnKey("key1", processor);

এখানে, EntryProcessor ব্যবহার করা হয়েছে যা IMap এর উপর trigger action হিসেবে কাজ করবে। একটি নির্দিষ্ট কী-তে ভ্যালু আপডেট করার জন্য এটি ব্যবহার করা হয়, যা পরবর্তীতে workflow management নিশ্চিত করে।


Events and Triggers for Workflow Management

Hazelcast ব্যবহার করে Events এবং Triggers-এর মাধ্যমে আপনি রিয়েল-টাইম workflow management কার্যকর করতে পারেন। ডিস্ট্রিবিউটেড সিস্টেমে যে কোনো পরিবর্তন বা ইনপুটের ভিত্তিতে, ইভেন্ট ও ট্রিগার অ্যাকশন কার্যকর হবে এবং সিস্টেমের অন্যান্য অংশে তা পৌঁছাবে।

Workflow Example Using Events and Triggers:

ধরা যাক, আপনি একটি টাস্ক ম্যানেজমেন্ট সিস্টেম তৈরি করছেন, যেখানে কোনো টাস্ক সম্পন্ন হওয়ার পরে একটি ইমেইল পাঠানো হবে। এখানে, Map Event ব্যবহার করে এবং একটি trigger action তৈরি করে এই কাজটি সম্পন্ন করা যাবে।

IMap<String, String> taskMap = hazelcastInstance.getMap("taskMap");

EntryListener<String, String> listener = new EntryListener<String, String>() {
    @Override
    public void entryAdded(EntryEvent<String, String> event) {
        // যদি কোনো টাস্ক সম্পন্ন হয়, তবেই ইমেইল পাঠানোর কাজ হবে
        if ("completed".equals(event.getValue())) {
            sendEmail("taskCompleted@example.com", "Your task has been completed!");
        }
    }

    @Override
    public void entryRemoved(EntryEvent<String, String> event) {
        // টাস্ক মুছে গেলে কোনো কার্যাবলী হবে না
    }

    @Override
    public void entryUpdated(EntryEvent<String, String> event) {
        // টাস্ক আপডেট হলে, কিছু কার্য করা হবে
    }

    @Override
    public void entryEvicted(EntryEvent<String, String> event) {
        // টাস্ক মুছে যাওয়ার পর কার্যাবলী
    }

    // Helper method to simulate sending an email
    private void sendEmail(String to, String message) {
        System.out.println("Sending email to " + to + ": " + message);
    }
};

// Add EntryListener to taskMap
taskMap.addEntryListener(listener, true);

এখানে, যখন কোনো টাস্ক taskMap-এ completed স্ট্যাটাসের সাথে যোগ করা হবে, তখন স্বয়ংক্রিয়ভাবে sendEmail() ফাংশন ট্রিগার হবে এবং একটি ইমেইল পাঠানো হবে।


Advantages of Using Events and Triggers in Workflow Management

  1. Real-time Processing: Hazelcast-এ ইভেন্ট এবং ট্রিগার ব্যবহার করে আপনি ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম প্রক্রিয়া পরিচালনা করতে পারেন।
  2. Automated Actions: যখন ডেটা পরিবর্তিত হয়, তখন স্বয়ংক্রিয়ভাবে কার্যকরী প্রক্রিয়া বা workflow চালানো যায়।
  3. Scalable Workflow: Hazelcast-এর ক্লাস্টারিং এবং ডিস্ট্রিবিউটেড ফিচার ব্যবহার করে বড় পরিসরে workflow পরিচালনা করা যায়।
  4. Event-driven Architecture: ইভেন্ট-ভিত্তিক আর্কিটেকচারটি সিস্টেমের পারফরম্যান্স এবং স্কেলেবিলিটি বাড়ানোর জন্য কার্যকর।

সারাংশ

Hazelcast Events এবং Triggers ব্যবহার করে আপনি একটি অত্যন্ত স্কেলেবল এবং কার্যকরী workflow management সিস্টেম তৈরি করতে পারেন। ডেটার পরিবর্তন ঘটলে স্বয়ংক্রিয়ভাবে ট্রিগার হওয়া কার্যাবলীর মাধ্যমে আপনার সিস্টেমকে আরও স্মার্ট এবং অটোমেটেড করা সম্ভব। Hazelcast এর EntryListeners, EntryProcessors, এবং Events আপনাকে ডিস্ট্রিবিউটেড সিস্টেমে real-time ইভেন্ট-ভিত্তিক কার্যাবলী পরিচালনা করার সুযোগ দেয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion